﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using QldtSdh.BLL;
using QldtSdh.DAL.Models;
using QldtSdh.GUI.Common;
using QldtSdh.GUI.Utils;

namespace QldtSdh.GUI.DaoTao
{
    public partial class FormQuanLyBaoLuu_BaoLuu : BaseDialog
    {
        bool allowUpdate = false;
        int entityToBeAdded = 0;
        public FormQuanLyBaoLuu_BaoLuu()
        {
            InitializeComponent();
            InitGridLop();
            InitGridHocVien();
            LoadKhoaHoc();
        }

        void InitGridLop()
        {
            gridDataLop.AutoGenerateColumns = false;
            colTenLop.DataPropertyName = "TenLopKhoaNganh";
            colTenCSDT.DataPropertyName = "TenCoSoDaoTao";
        }

        void InitGridHocVien()
        {
            gridDataDSHV.AutoGenerateColumns = false;
            colMaHocVien.DataPropertyName = "MaHocVien";
            colHoDem.DataPropertyName = "HoDem";
            colTen.DataPropertyName = "Ten";
            colGioiTinh.DataPropertyName = "GioiTinhStr";
            colNgaySinh.DataPropertyName = "NgaySinh";
            colDiaChi.DataPropertyName = "DiaChi";
        }

        void LoadKhoaHoc()
        {
            allowUpdate = false;
            var ls = BizKhoaHoc.GetList();
            cmbKhoaHoc.DataSource = ls;
            cmbKhoaHoc.DisplayMember = "TenKhoaHoc";
            cmbKhoaHoc.ValueMember = "MaKhoaHocGUID";
            allowUpdate = true;
            LoadNganhHoc();
        }

        void LoadNganhHoc()
        {
            allowUpdate = false;
            var khoaHoc = cmbKhoaHoc.SelectedItem as KhoaHoc;
            if (khoaHoc != null)
            {
                var ls = BizKhoaHoc_NganhDaoTao.GetListByKhoaHoc2(khoaHoc.MaKhoaHocGUID);
                cmbNganhHoc.DataSource = ls;
                cmbNganhHoc.DisplayMember = "TenNganhDaoTao";
                cmbNganhHoc.ValueMember = "MaNganhDaoTaoGUID";

                if (ls != null && ls.Count > 0)
                {

                }
                else
                {

                }
            }
            else
            {
                cmbNganhHoc.DataSource = null;

            }
            allowUpdate = true;
            LoadLop();
        }

        void LoadLop()
        {
            allowUpdate = false;
            var khoaHoc = cmbKhoaHoc.SelectedItem as KhoaHoc;
            var nganhHoc = cmbNganhHoc.SelectedItem as NganhDaoTao;
            if (khoaHoc != null && nganhHoc != null)
            {
                var ls = BizLopKhoaNganh.GetList(khoaHoc.MaKhoaHocGUID, nganhHoc.MaNganhDaoTaoGUID);
                bdLop.DataSource = ls;
                gridDataLop.DataSource = bdLop;
                if (ls != null && ls.Count > 0)
                {
                    lbSoLop.Text = "Danh sách này có: " + ls.Count + " lớp";

                }
                else
                {
                    lbSoLop.Text = "Danh sách này có: 0 lớp";

                }
            }
            else
            {
                bdLop.DataSource = null;
                lbSoLop.Text = "Danh sách này có: 0 lớp";

            }
            allowUpdate = true;
            LoadDSHV();
        }

        void LoadDSHV()
        {
            allowUpdate = false;
            var lop = bdLop.Current as LopKhoaNganh;
            if (lop != null)
            {
                var ls = BizHocVien.GetList(lop.MaLopKhoaNganhGUID);
                var lsBaoLuu = BizBaoLuu.GetList();
                if (ls != null && ls.Count > 0 && lsBaoLuu != null && lsBaoLuu.Count > 0)
                {
                    foreach (var item in lsBaoLuu)
                    {
                        var isExist = ls.Where(e => e.MaHocVien == item.MaHocVien).FirstOrDefault();
                        if (isExist != null)
                            ls.Remove(isExist);
                    }
                }
                bdDSHV.DataSource = ls;
                gridDataDSHV.DataSource = bdDSHV;
                if (ls != null && ls.Count > 0)
                {
                    lbSoHocVien.Text = "Danh sách này có: " + ls.Count + " học viên";
                    btnBaoLuu.Enabled = true;
                }
                else
                {
                    lbSoHocVien.Text = "Danh sách này có: 0 học viên";
                    btnBaoLuu.Enabled = false;
                }
            }
            else
            {
                lbSoHocVien.Text = "Danh sách này có: 0 học viên";
                bdDSHV.DataSource = null;
                btnBaoLuu.Enabled = false;
            }
            allowUpdate = true;
        }

        private void bdLop_CurrentChanged(object sender, EventArgs e)
        {
            if (allowUpdate)
            {
                LoadDSHV();
            }
        }

        private void cmbKhoaHoc_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (allowUpdate)
            {
                LoadNganhHoc();
            }
        }

        private void cmbNganhHoc_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (allowUpdate)
            {
                LoadLop();
            }
        }

        private void btnBaoLuu_Click(object sender, EventArgs e)
        {
            var current = bdDSHV.Current as HocVien;
            if (current != null)
            {
                var dg = new FormQuanLyBaoLuu_BaoLuu_ChiTiet(current);
                if (dg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    DialogUtils.ShowMessage(string.Format("Đã bảo lưu cho học viên: {0} {1} thành công.", current.HoDem, current.Ten));
                    LoadDSHV();
                    entityToBeAdded++;
                }
                else
                    DialogUtils.ShowMessage(string.Format("Học viên {0} {1} đã được bảo lưu trước đó.", current.HoDem, current.Ten));
            }
        }

        private void FormQuanLyBaoLuu_BaoLuu_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (entityToBeAdded > 0)
                DialogResult = System.Windows.Forms.DialogResult.OK;
        }
    }
}
